[feat](Nereids): lazy get expression map when comparing hypergraph#34753
Merged
morrySnow merged 2 commits intoapache:masterfrom May 17, 2024
Merged
[feat](Nereids): lazy get expression map when comparing hypergraph#34753morrySnow merged 2 commits intoapache:masterfrom
morrySnow merged 2 commits intoapache:masterfrom
Conversation
|
Thank you for your contribution to Apache Doris. Since 2024-03-18, the Document has been moved to doris-website. |
Contributor
Author
|
run buildall |
TPC-H: Total hot run time: 39939 ms |
TPC-DS: Total hot run time: 186290 ms |
Contributor
Author
|
run buildall |
TPC-H: Total hot run time: 41725 ms |
TPC-DS: Total hot run time: 187401 ms |
Contributor
Author
|
run buildall |
Contributor
Author
|
run buildall |
seawinde
reviewed
May 15, 2024
| queryToViewAllExpressionMapping.putAll(getQueryToViewFilterEdgeExpressionMapping()); | ||
| return queryToViewAllExpressionMapping; | ||
| public Expression getQueryJoinExprFromView(Expression viewJoinExpr) { | ||
| return queryToViewJoinEdgeExpressionMappingSupplier.get().inverse().get(viewJoinExpr); |
Contributor
There was a problem hiding this comment.
inverse() need calc, Maybe we should construct viewToQueryJoinEdgeExpressionMapping field in context for performance
seawinde
reviewed
May 15, 2024
| } | ||
|
|
||
| public Expression getQueryFilterExprFromView(Expression viewJoinExpr) { | ||
| return queryToViewFilterEdgeExpressionMappingSupplier.get().inverse().get(viewJoinExpr); |
seawinde
reviewed
May 15, 2024
| public BiMap<Expression, Expression> getQueryToViewNodeExpressionMapping() { | ||
| return queryToViewNodeExpressionMappingSupplier.get(); | ||
| public Expression getQueryNodeExpFromView(Expression viewJoinExpr) { | ||
| return queryToViewNodeExpressionMappingSupplier.get().inverse().get(viewJoinExpr); |
Contributor
Author
|
run buildall |
seawinde
approved these changes
May 15, 2024
Contributor
|
PR approved by anyone and no changes requested. |
Contributor
|
run performance |
morrySnow
approved these changes
May 17, 2024
Contributor
|
PR approved by at least one committer and no changes requested. |
yiguolei
pushed a commit
that referenced
this pull request
May 18, 2024
dataroaring
pushed a commit
that referenced
this pull request
May 26, 2024
16 tasks
starocean999
pushed a commit
that referenced
this pull request
Dec 3, 2024
…by materialized view fail (#44575) Such as mv def is as following and query is the same this is the same filter `l_orderkey is null or l_orderkey <> 1` but they are in the different position. this would cause rewrite fail, this pr fix this. ```sql select o_custkey, o_orderdate, o_shippriority, o_comment, o_orderkey, orders.public_col as col1, l_orderkey, l_partkey, l_suppkey, lineitem.public_col as col2, ps_partkey, ps_suppkey, partsupp.public_col as col3, partsupp.public_col * 2 as col4, o_orderkey + l_orderkey + ps_partkey * 2, sum( o_orderkey + l_orderkey + ps_partkey * 2 ), count() as count_all from ( select o_custkey, o_orderdate, o_shippriority, o_comment, o_orderkey, orders.public_col as public_col from orders ) orders left join ( select l_orderkey, l_partkey, l_suppkey, lineitem.public_col as public_col from lineitem where l_orderkey is null or l_orderkey <> 1 ) lineitem on l_orderkey = o_orderkey inner join ( select ps_partkey, ps_suppkey, partsupp.public_col as public_col from partsupp ) partsupp on ps_partkey = o_orderkey and ps_suppkey = o_custkey where l_orderkey is null or l_orderkey <> 1 group by 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14; ``` Related PR: #34753 Fix filter position different but same causing rewritten by materialized view fail
github-actions bot
pushed a commit
that referenced
this pull request
Dec 3, 2024
…by materialized view fail (#44575) Such as mv def is as following and query is the same this is the same filter `l_orderkey is null or l_orderkey <> 1` but they are in the different position. this would cause rewrite fail, this pr fix this. ```sql select o_custkey, o_orderdate, o_shippriority, o_comment, o_orderkey, orders.public_col as col1, l_orderkey, l_partkey, l_suppkey, lineitem.public_col as col2, ps_partkey, ps_suppkey, partsupp.public_col as col3, partsupp.public_col * 2 as col4, o_orderkey + l_orderkey + ps_partkey * 2, sum( o_orderkey + l_orderkey + ps_partkey * 2 ), count() as count_all from ( select o_custkey, o_orderdate, o_shippriority, o_comment, o_orderkey, orders.public_col as public_col from orders ) orders left join ( select l_orderkey, l_partkey, l_suppkey, lineitem.public_col as public_col from lineitem where l_orderkey is null or l_orderkey <> 1 ) lineitem on l_orderkey = o_orderkey inner join ( select ps_partkey, ps_suppkey, partsupp.public_col as public_col from partsupp ) partsupp on ps_partkey = o_orderkey and ps_suppkey = o_custkey where l_orderkey is null or l_orderkey <> 1 group by 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14; ``` Related PR: #34753 Fix filter position different but same causing rewritten by materialized view fail
github-actions bot
pushed a commit
that referenced
this pull request
Dec 3, 2024
…by materialized view fail (#44575) Such as mv def is as following and query is the same this is the same filter `l_orderkey is null or l_orderkey <> 1` but they are in the different position. this would cause rewrite fail, this pr fix this. ```sql select o_custkey, o_orderdate, o_shippriority, o_comment, o_orderkey, orders.public_col as col1, l_orderkey, l_partkey, l_suppkey, lineitem.public_col as col2, ps_partkey, ps_suppkey, partsupp.public_col as col3, partsupp.public_col * 2 as col4, o_orderkey + l_orderkey + ps_partkey * 2, sum( o_orderkey + l_orderkey + ps_partkey * 2 ), count() as count_all from ( select o_custkey, o_orderdate, o_shippriority, o_comment, o_orderkey, orders.public_col as public_col from orders ) orders left join ( select l_orderkey, l_partkey, l_suppkey, lineitem.public_col as public_col from lineitem where l_orderkey is null or l_orderkey <> 1 ) lineitem on l_orderkey = o_orderkey inner join ( select ps_partkey, ps_suppkey, partsupp.public_col as public_col from partsupp ) partsupp on ps_partkey = o_orderkey and ps_suppkey = o_custkey where l_orderkey is null or l_orderkey <> 1 group by 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14; ``` Related PR: #34753 Fix filter position different but same causing rewritten by materialized view fail
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Proposed changes
lazy get ExpressionMap when comparing hypergraph
Further comments
If this is a relatively large or complex change, kick off the discussion at dev@doris.apache.org by explaining why you chose the solution you did and what alternatives you considered, etc...